﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Theme3
{
    /// <summary>Тип Прямоугольника.</summary>
    public enum RectangleType
    {
        /// <summary>Неизвестный.</summary>
        Unknown = 0,
        /// <summary>Вырожденный.</summary>
        Degenerated = 1,
        /// <summary>Квадрат.</summary>
        Square = 2,
        /// <summary>Прямоугольник.</summary>
        Rectangle = 3,
        /// <summary>Ромб.</summary>
        Rhomb = 4,
        /// <summary>Параллелограмм.</summary>
        Parallelogram = 5,
    }

    public class RectangleChecker
    {
        /// <summary>
        /// Определить тип Прямоугольника по значениям длин сторон A/C и B/D (считаем что противоположные стороны всегда равны) и углу между сторонами A и B.
        /// </summary>
        /// <param name="ac">Длина каждой из сторон A и C, значение должно быть строго больше нуля.</param>
        /// <param name="bd">Длина каждой из сторон B и D, значение должно быть строго больше нуля.</param>
        /// <param name="abAngle">Угол между сторонами A и B, значение в диапазоне [0, 360].</param>
        /// <returns>Тип Треугольника, либо ошибка, если требования к входным параметрам не были соблюдены.</returns>
        public RectangleType Check(double ac, double bd, double abAngle)
        {
            RectangleType result = RectangleType.Unknown;

            if (ac <= 0)
            {
                throw new ArgumentException("ac", "ac");
            }
            if (bd <= 0)
            {
                throw new ArgumentException("bd", "bd");
            }
            if ((abAngle < 0) || (abAngle > 360))
            {
                throw new ArgumentException("abAngle", "abAngle");
            }

            if ((abAngle == 0) || (abAngle == 180) || (abAngle == 360))
            {
                result = RectangleType.Degenerated;
            }
            else
            {
                if (abAngle == 90)
                {
                    if (ac == bd)
                    {
                        result = RectangleType.Square;
                    }
                    else if (ac != bd)
                    {
                        result = RectangleType.Rectangle;
                    }
                }
                else if (abAngle != 90)
                {
                    if (ac == bd)
                    {
                        result = RectangleType.Rhomb;
                    }
                    else if (ac != bd)
                    {
                        result = RectangleType.Parallelogram;
                    }
                }
            }

            return result;
        }
    }
}
